/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.beansjsf.contestacao;

import br.com.saber.certificacao.beansjsf.semescopo.FluxoExibicaoMaster;
import br.com.saber.certificacao.utils.UtilMetodos;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author gbvbahia
 */
@ManagedBean(name = "fluxoExibicaoContestacao")
@ViewScoped
public class FluxoExibicao extends FluxoExibicaoMaster {

    private boolean exibirContstacaoQuestao;

    private boolean exibirContestacaoRanking;

    private boolean exibirContestacaoResultado;

    private enum PaginaFluxo {

        CONTESTACAO_QUESTAO, CONTESTACAO_RESULTADO, CONTESTACAO_RANKING;

    }

    /** Creates a new instance of FluxoExibicao */
    public FluxoExibicao() {
    }

    //====================
    // Iniciadores
    //====================
    @Override
    @PostConstruct
    public void init() {
        metodoExibirContestacaoQuestao();
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Contestacao:(init()) chamado...");
    }

    @Override
    @PreDestroy
    public void end() {
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Contestacao: (end()) chamado...");
    }

    public void metodoExibirContestacaoQuestao() {
        alterarTela(PaginaFluxo.CONTESTACAO_QUESTAO);
    }

    public void metodoExibirContestacaoRanking() {
        alterarTela(PaginaFluxo.CONTESTACAO_RANKING);
    }

    public void metodoExibirContestacaoResultado() {
        alterarTela(PaginaFluxo.CONTESTACAO_RESULTADO);
    }
    
    private void alterarTela(PaginaFluxo paginaLogin) {
        exibirContstacaoQuestao = (PaginaFluxo.CONTESTACAO_QUESTAO.equals(paginaLogin));
        exibirContestacaoRanking = (PaginaFluxo.CONTESTACAO_RANKING.equals(paginaLogin));
        exibirContestacaoResultado = (PaginaFluxo.CONTESTACAO_RESULTADO.equals(paginaLogin));
        definirAtributos(paginaLogin);
    }

    private void definirAtributos(PaginaFluxo paginaLogin) {
        FacesContext fc = FacesContext.getCurrentInstance();
        switch (paginaLogin) {
            case CONTESTACAO_QUESTAO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelContestacaoQuestao", fc);
                this.imgURLNormal = "questao_contestar_48.png";
                break;
            case CONTESTACAO_RANKING:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelContestacaoRanking", fc);
                this.imgURLNormal = "questao_contestacao_ranking_48.png";
                break;
            case CONTESTACAO_RESULTADO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelContestacaoResultado", fc);
                this.imgURLNormal = "questao_contestacao_resultado_48.png";
                break;
            default:
                throw new AssertionError("Não foi definido case para a enum: " + paginaLogin.toString());
        }
    }

    //=========================
    //Getters AND Setters
    //=========================
    public boolean isExibirContestacaoRanking() {
        return exibirContestacaoRanking;
    }

    public void setExibirContestacaoRanking(boolean exibirContestacaoRanking) {
        this.exibirContestacaoRanking = exibirContestacaoRanking;
    }

    public boolean isExibirContstacaoQuestao() {
        return exibirContstacaoQuestao;
    }

    public void setExibirContstacaoQuestao(boolean exibirContstacaoQuestao) {
        this.exibirContstacaoQuestao = exibirContstacaoQuestao;
    }

    public boolean isExibirContestacaoResultado() {
        return exibirContestacaoResultado;
    }

    public void setExibirContestacaoResultado(boolean exibirContestacaoResultado) {
        this.exibirContestacaoResultado = exibirContestacaoResultado;
    }
}
